PdfViewer for UWP
保護されている可能性のあるファイルを開く
主な特長 > 保護されている可能性のあるファイルを開く

エンドユーザーが PDF ファイルを開くことができるようにする場合、そのファイルがパスワード保護されるかどうかを予測できないことがあります。次のサンプルの方法は、このことをチェックして、それに従ってドキュメントを開く方法を示しています。

VB でマークアップを書く場合

VB
コードのコピー
' 既存の PDF ファイルを開きます
Private Sub _btnOpen_Click(sender As Object, e As RoutedEventArgs)
Dim dlg = New OpenFileDialog()
dlg.Filter = "Pdf files (*.pdf)|*.pdf"
If dlg.ShowDialog().Value
Then Dim ms = New System.IO.MemoryStream()
Using stream = dlg.File.OpenRead()
stream.CopyTo(ms)
End Using LoadProtectedDocument(ms, Nothing)
End If
End Sub

C# でマークアップを書く場合

C#
コードのコピー
// 既存の PDF ファイルを開きます
void _btnOpen_Click(object sender, RoutedEventArgs e)
{
var dlg = new OpenFileDialog();
dlg.Filter = "Pdf files (*.pdf)|*.pdf";
if (dlg.ShowDialog().Value)
{
var ms = new System.IO.MemoryStream();
using (var stream = dlg.File.OpenRead()
{stream.CopyTo(ms);
}
LoadProtectedDocument(ms, null);
}
}

保護されたファイルを読み取る場合は、LoadProtectedDocument メソッドを呼び出します。パスワードを null にしてこのメソッドを呼び出すと、保護されていないファイルが開きます。ファイルがパスワード保護(暗号化)されている場合は、例外が生成され、キャッチされます。次に、ユーザーは、実際のパスワードの入力を要求され、メソッドが自分自身を再帰的に呼び出します。

VB でマークアップを書く場合

VB
コードのコピー
' パスワード保護された PDF ドキュメントを読み込みます。
    Private Sub LoadProtectedDocument(stream As System.IO.MemoryStream, password As String)
    Try
    stream.Position = 0
    _viewer.LoadDocument(stream, password)
    Catch x As Exception
   '{
    Dim msg = "このファイルは、パスワードで保護されています。" & vbCr & vbLf & "Please provide the password and try again."
    C1.Silverlight.C1PromptBox.Show(msg, "Enter Password", Function(text, result)
 If result = MessageBoxResult.OK Then
' ユーザーが指定したパスワードを使用して、もう一度試してください
   LoadProtectedDocument(stream, text)
End If
    '}
    'else
    '{
    ' throw;
    '}
    End Function)
    End Try
    End Sub

C# でマークアップを書く場合

C#
コードのコピー
// パスワード保護された PDF ドキュメントを読み込みます。
    void LoadProtectedDocument(System.IO.MemoryStream stream, string password)
     {
     try
     {
     stream.Position = 0;
     _viewer.LoadDocument(stream, password);
     }
     catch (Exception x)
     {
     //if (x.Message.IndexOf("password") > -1)
     //{
     var msg = "このファイルは、パスワードで保護されています。\r\nPlease provide the password and try again.";
     C1.Silverlight.C1PromptBox.Show(msg, "Enter Password", (text, result) =>
     {
     if (result == MessageBoxResult.OK)
     {
     // ユーザーが指定したパスワードを使用して、もう一度試してください
     LoadProtectedDocument(stream, text);
     }
     });
     //}
     //else
     //{
     // throw;
     //}
     }
    }